package com.cysyz.mylib.excel;

import java.io.File;
import java.util.List;
import java.util.Map;

import com.cysyz.mylib.excel.engine.ExcelEngine;
import com.cysyz.mylib.excel.exception.ExcelException;
import com.cysyz.mylib.excel.validator.FileNameValidator;
import com.cysyz.mylib.excel.validator.SheetNameValidator;

public interface IExcelReader {

	/**
	 * 把一个excel文件中的信息转化为一个对象的列表
	 * <p>
	 * 使用方法： 1.在要被转化的对象上面的某个属性上面设置@ExcelVOAttribute
	 * 并且设置其column属性。如果希望与excel中的A列对应，那么就设置@ExcelVOAttribute(column="A") 2.调用此方法
	 * 
	 * @Title: importExcel
	 * @Author: 崔勇 cysyz1229@gmail.com
	 * @Version: V1.00
	 * @Date Apr 5, 2014 2:09:28 PM
	 * @param clazz
	 *            要被转化的类
	 * @param sheetName
	 *            要读取的某个特定sheet的名称
	 * @param excelFile
	 *            excel文件
	 * @return
	 * @throws ExcelException 
	 */
	public abstract <T> Map<String, List<T>> importExcel(Class<T> clazz,
			String sheetName, File excelFile, List<SheetHeader> sheetHeaders,
			FileNameValidator fileNameValidator,
			SheetNameValidator sheetNameValidator) throws ExcelException;
	
	/**
	 * 配置ExcelEngine
	 * @Title: setExcelEngine
	 * @Author: 崔勇	cysyz1229@gmail.com
	 * @Version: V1.00
	 * @Date 2014-4-23 下午9:45:39
	 * @param excelEngine
	 */
	public void setExcelEngine(ExcelEngine excelEngine);
}